#include "Semaphore.hpp"



System::Semaphore::Semaphore(int value)
{
	// Utiliser PTHREAD_PROCESS_SHARED pour pouvoir utiliser 
	// la même sémaphore dans plusieurs processus.
	sem_init(&_sem, PTHREAD_PROCESS_PRIVATE, value);
}



System::Semaphore::~Semaphore()
{
	sem_destroy(&_sem);
}



void System::Semaphore::take()
{
	sem_wait(&_sem);
}



void System::Semaphore::give()
{
	sem_post(&_sem);
}



bool System::Semaphore::tryTake()
{
	return !sem_trywait(&_sem);
}



int System::Semaphore::getValue()
{
	int val;
	sem_getvalue(&_sem, &val);
	return val;
}




